package exception;

import java.awt.*;
import java.util.NoSuchElementException;

/**
 * java异常处理机制:try...catch
 * try{
 *     代码片段
 * }catch(XXXException e){
 *     当try的代码片段出现XXXException时的补救措施
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {

        System.out.println("开始...");

        try{
            String s = "o";
            System.out.println(s.charAt(0));
            String s1 = "abc";
            System.out.println(Integer.parseInt(s1));
        }catch(Exception e){
            System.out.println("错误");
        }

        System.out.println("结束...");




        System.out.println("开始");

        try{
            //try块中某句代码如果出现了异常，那么try块中这句块以下的代码都不执行了
            //try语句中如果不出现异常，catch块不执行
            String line = null;
            System.out.println(line.length());
            String line1 = "";//因为上一句发生异常，所有try块中此句及以下代码都不会被执行了
            System.out.println(line1.charAt(0));
            String line2 = "abc";
            System.out.println(Integer.parseInt(line2));
        }catch (NullPointerException e){//捕获空指针异常
            System.out.println("出现了空指针异常并解决了");//处理方法
        }catch(StringIndexOutOfBoundsException e){
            System.out.println("出现了字符串下标越界异常并解决了");
        //}catch(NullPointerException | StringIndexOutOfBoundsException e){//若多个异常
            //System.out.println("下标或空指针异常");
        }catch(Exception e){//可以再最后捕获超类型异常，凡是该异常的子类都会被处理
            System.out.println("出了错");
        }

        System.out.println("结束");
    }
}
